<?php

namespace app\model;

class MessageModel extends BaseModel
{
    /**
     * 与模型关联的表名
     *
     * @var string
     */
    protected $table = 'message';

    /**
     * 消息类型常量
     */
    const TYPE_LIKE = 1;        // 点赞消息
    const TYPE_COMMENT = 2;     // 评论消息
    const TYPE_COLLECT = 3;     // 收藏消息
    const TYPE_FOLLOW = 4;      // 关注消息
    const TYPE_SYSTEM = 5;      // 系统通知
    const TYPE_ANNOUNCEMENT = 6; // 公告消息

    /**
     * 消息状态常量
     */
    const STATUS_UNREAD = 0;    // 未读
    const STATUS_READ = 1;      // 已读

    /**
     * 发送者用户关联
     */
    public function fromUser()
    {
        return $this->belongsTo(UsersModel::class, 'from_uid');
    }

    /**
     * 接收者用户关联
     */
    public function toUser()
    {
        return $this->belongsTo(UsersModel::class, 'to_uid');
    }

    /**
     * 关联帖子
     */
    public function post()
    {
        return $this->belongsTo(PostModel::class, 'post_id');
    }

    /**
     * 标记消息为已读
     *
     * @return bool
     */
    public function markAsRead()
    {
        return $this->update(['status' => self::STATUS_READ]);
    }
}